package com.spm.study.demoproject.area.publicInterface.controller;

import cn.hutool.core.util.StrUtil;
import com.spm.study.demoproject.area.base.BaseController;
import com.spm.study.demoproject.area.base.utils.JsonResult;
import com.spm.study.demoproject.area.publicInterface.entity.Staff;
import com.spm.study.demoproject.area.publicInterface.service.CurrentService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.regex.Pattern;

/**
 * 通用接口，用来写一些基本，简单，通用的接口方法
 * @author aiya 2022-10-8
 */
@RestController
@RequestMapping("/base")
public class CurrentController extends BaseController {

    /**
     * 手机号的正则表达式
     */
    private final String PHONE_REGEX = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$";

    @Resource
    private CurrentService currentService;

    /**
     * 根据IMS系统的token 得到 ID，Name
     * @param token token信息
     * @return 返回对应token得到的人
     */
    @GetMapping("/token")
    public JsonResult<Staff> getStaffByToken(@RequestParam("token") String token){
        //做token验证处理
        if (token == null || "".equals(token)){
            return new JsonResult<>(error,"token不能为空！",null);
        }
        Staff staff = currentService.getStaffByToken(token);
        return new JsonResult<>(OK, staff);
    }

    /**
     * 根据手机号得到对应的用户信息
     * @param phone 手机号
     * @return 返回对应手机号得到的人
     */
    @GetMapping("/phone")
    public JsonResult<Staff> getStaffByPhone(@RequestParam("phone") String phone){
        //做手机号验证处理，如果不是11位手机号,返回空，否则查询数据
        return Pattern.matches(PHONE_REGEX,phone)
                ? new JsonResult<>(OK, currentService.getStaffByPhone(phone))
                : new JsonResult<>(error,"手机号不能为空",null);
    }

    /**
     * 根据用户六位员工编号 或者 八位员工编号 得到基本信息
     */
        @GetMapping("/empno")
    public JsonResult<Staff> getStaffByEmpno(@RequestParam("empno") String empno){
        //员工编号基本信息的验证
        if (empno == null || "".equals(empno)){
            return new JsonResult<>(error,"员工编号不能为空",null);
        }

        Staff staff = null;
        //六位员工编号
        if (empno.length() == 6){
            staff = currentService.getStaffByNo(empno);
        }
        //八位员工编号
        if (empno.length() == 8){
            staff = currentService.getStaffByEno(empno);
        }
        return new JsonResult<>(OK, staff);
    }

    /**
     * 根据工号，得到小组组长等信息，使用前请测试数据库，并非通用
     * @param empno 员工编号，目前只允许6位编号
     * @param post 工作岗位，目前只允许小组长等岗位
     */
    @GetMapping("/chargeman")
    public JsonResult<Staff> getStaffByEmpnoAndPost(@RequestParam String empno, @RequestParam String post){
        //其中一个为空
        if (StrUtil.isBlank(empno) || StrUtil.isBlank(post)){
            return new JsonResult<>(error,"必填信息不能为空!",null);
        }
        Staff staff = currentService.getStaffByEmpnoAndPost(empno, post);
        return new JsonResult<>(OK,staff);
    }




}
